# -*- coding:utf-8 -*-

import functools
from werkzeug.routing import BaseConverter
from flask import session, jsonify, g
from iHome.utils.response_code import RET

# 定义正则的转换器


class RegexConverter(BaseConverter):

    def __init__(self, url_map, *args, **kwargs):
        super(RegexConverter, self).__init__(url_map)
        self.regex = args[0]


def login_required(f):
    """
    用户是否登录判断装饰器
    :param f: 其装饰的函数
    :return : 装饰器
    :param f:
    :return:
    """
    @functools.wraps(f)  # 修饰内层函数,以防止当前装饰器取修改被装饰函数的__name__属性
    def wrapper(*args, **kwargs):
        # 从session 中获取当前用户id
        user_id = session.get('user_id')
        # 如果user_id为None代表用户没有登录,直接返回未登录信息
        if user_id is None:
            return jsonify(errno=RET.SESSIONERR, errmsg="用户未登录")
        else:
            g.user_id = user_id
            return f(*args, **kwargs)
    return wrapper
